Conversation
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
Android (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 3da007c+dirty | 424.56 ms | 448.54 ms | 23.98 ms |
| 38ab0b8+dirty | 426.03 ms | 446.65 ms | 20.62 ms |
| 1e3886c+dirty | 421.49 ms | 464.16 ms | 42.67 ms |
| 7a2d816+dirty | 470.94 ms | 515.62 ms | 44.68 ms |
| 3bacb46+dirty | 423.54 ms | 428.93 ms | 5.39 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 3da007c+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 38ab0b8+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 1e3886c+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 7a2d816+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 3bacb46+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
Previous results on branch: al/gradle-asset-tasks-tests
Startup times
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a52662+dirty | 471.36 ms | 518.12 ms | 46.76 ms |
| 9945bc7+dirty | 487.80 ms | 540.44 ms | 52.64 ms |
| e04bc70+dirty | 431.27 ms | 455.69 ms | 24.42 ms |
| aa679e6+dirty | 426.69 ms | 455.90 ms | 29.20 ms |
| f20cf41+dirty | 426.83 ms | 446.08 ms | 19.25 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a52662+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 9945bc7+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| e04bc70+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| aa679e6+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| f20cf41+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
📲 Install BuildsAndroid
|
Android (new) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 3da007c+dirty | 429.00 ms | 457.34 ms | 28.34 ms |
| 38ab0b8+dirty | 417.88 ms | 431.80 ms | 13.92 ms |
| 1e3886c+dirty | 434.40 ms | 470.29 ms | 35.89 ms |
| 7a2d816+dirty | 433.18 ms | 458.43 ms | 25.25 ms |
| 3bacb46+dirty | 428.24 ms | 459.82 ms | 31.58 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 3da007c+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 38ab0b8+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 1e3886c+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 7a2d816+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 3bacb46+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
Previous results on branch: al/gradle-asset-tasks-tests
Startup times
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a52662+dirty | 425.61 ms | 440.60 ms | 14.99 ms |
| 9945bc7+dirty | 447.71 ms | 506.08 ms | 58.37 ms |
| e04bc70+dirty | 422.98 ms | 441.69 ms | 18.71 ms |
| aa679e6+dirty | 452.06 ms | 474.58 ms | 22.52 ms |
| f20cf41+dirty | 429.12 ms | 447.57 ms | 18.45 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a52662+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| 9945bc7+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| e04bc70+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| aa679e6+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
| f20cf41+dirty | 50.56 MiB | 56.50 MiB | 5.93 MiB |
69a44c1 to
14b2a29
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 14b2a29. Configure here.
14b2a29 to
6be74ae
Compare
9d22855 to
a2fcc04
Compare
c89d8ba to
4367636
Compare
Cover the generated-asset tasks introduced for issue #6750 (PRs #6751/#6753) with functional tests that apply the real sentry.gradle.kts script plugin to a minimal AGP fixture and drive the tasks through GradleTestKit: - SentryOptionsTaskTest: plain copy, SENTRY_RELEASE override, opt-out via SENTRY_COPY_OPTIONS_FILE=false, and missing-source fallback. - SentryModulesTaskTest: modules.json generated into build/ (never src/main/ assets), UP-TO-DATE on rebuild, skipCollectModules opt-out, and missing source map fallback. Runs on the existing RNSentryAndroidTester testDebugUnitTest job, so no new CI infrastructure is required. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…pendency Two-build-type fixture (`release` + `qaRelease`) proving `lintQaRelease` does not depend on the `release` variant's modules task. Verified red-capable: it fails against the old `it.name.contains(variantCapitalized)` substring match and passes with the token-boundary scoping. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pass a SENTRY_*-scrubbed environment to GradleRunner in both asset-task test classes so the assertions depend only on the fixture and each test's explicit env, not on SENTRY_RELEASE/ENVIRONMENT/DIST/COPY_OPTIONS_FILE a developer may have exported locally. Also extend the variant-scoping regression to assert the non-`lint*`-prefixed `updateLintBaselineQaRelease` is likewise not wired to the release modules task, and document that `lintRelease` is a non-vacuity control (in this fixture lint depends on the modules task only through the explicit wiring). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Guards the lint-family matcher against over-binding: a `ktlint*` task (from the ktlint Gradle plugin) carries a lowercase `lint` mid-name and the variant name but is not an AGP lint task, so it must not depend on CollectModulesTask and pull in the JS bundler. Fails against a case-insensitive `lint` substring match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a GradleTestKit regression test asserting the modules task stays UP-TO-DATE — and its modules.json is preserved, not emptied — when the source map it reads is deleted (as the upload cleanup does) and the bundle is unchanged. The bundle stub now also writes the --bundle-output file (the task's stable fingerprint) and can declare it as an output so the bundle task goes up-to-date on rerun, reproducing the real bundle task that does not track the forced source map as an output. Red against a source-map-fingerprinted task (re-runs, finds no map, packages an empty assets dir); green once the fingerprint is the bundle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4367636 to
5217d5e
Compare
GenerateSentryOptionsTask.generate() parses the source as JSON before applying SENTRY_ENVIRONMENT/RELEASE/DIST overrides, and on a parse failure logs a warning and copies the source verbatim rather than failing the build. That catch branch was untested (Warden flagged the coverage gap on #6751). Add a case with an override set and a malformed source, asserting the task succeeds and the output matches the source byte-for-byte — verbatim equality proves the fallback ran, since a successful parse would re-serialize the JSON. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| File(projectDir, "build.gradle").writeText( | ||
| """ | ||
| plugins { | ||
| id 'com.android.application' version '8.3.2' |
There was a problem hiding this comment.
does it actually have to be hardcoded here (and below as well)? If we bump AGP, the fixtures will keep testing 8.3.2
| ] | ||
| android { | ||
| namespace 'io.sentry.fixture' | ||
| compileSdk 34 |
There was a problem hiding this comment.
compileSdk 34 in the fixture while the host project pins 33
|
|
||
| val bundleFile = File(projectDir, "build/generated/assets/react/release/index.android.bundle") | ||
| val sourcemapFile = File(projectDir, "build/generated/sourcemaps/react/release/index.android.bundle.map") | ||
|
|
There was a problem hiding this comment.
both files (this and SentryOptionsTaskTest.kt) have identical shared code (settings.gradle, local.properties, manifest) that can be extracted to some common base or helper
Address review feedback on the GradleTestKit fixtures: - Stop hardcoding AGP 8.3.2 and compileSdk 34 in the fixtures. The host build now injects its own AGP version (com.android.Version) and compileSdk as system properties, and the fixtures read them, so bumping the host no longer leaves the fixtures silently testing a stale toolchain. This also fixes the fixture pinning compileSdk 34 while the host is on 33. - Extract the duplicated scaffolding (settings.gradle, local.properties, stub manifest, path escaping, SENTRY_* env scrubbing, system-property reads) from both test classes into a shared BaseSentryGradleTest base class. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

📢 Type of change
📜 Description
Adds test for PRs #6751 and #6753
💡 Motivation and Context
Closes #6752
💚 How did you test it?
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps